[sql问题]查找出员工工资表中薪水第3高的员工记录。

来源:百度知道 编辑:UC知道 时间:2024/09/28 15:50:11
员工工资表:staff_payment
表中有:
(1)id int
(2)name varchar(10)
(3)payment money
实际情况是可能员工的工资有一样的记录。
不用rownum该怎么弄?

select * from staff_payment order by payment desc where
rownum = 3

没试,自己试试看

/*select *
from staff_payment
where payment=(
select distinct payment
from staff_payment
order by payment desc
where rownum=3
)*/
不知道逻辑上有没有错误,我这里也试不了。
有错请指出,我也是菜鸟。

select * from staff_payment
where payment=(
select max(payment) from(
select distinct top 3 payment from staff_payment
order by payment)as temp)
测试通过!

思路:用distinct关键字去除重复记录.最内层语句选出工资排在前三名的记录,然后用max函数选出其最大值也就是第3高的工资。最外层语句则用工资匹配选出其所需第3高的员工记录。
在SQL2000中测试通过,如有问题请指出。

select top 1 * from staff_payment where payment money in(select top 3 payment money from staff_payment order by payment money desc)